﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;

namespace IO操作02
{
    class Program
    {
        static void Main(string[] args)
        {
            // 目录的路径（文件所在的路径）
            string dirPath = @"D:\文件练习\File和Directory静态类的练习";
            // 文件的完整路径（包含文件本身）
            string filePath = string.Format(@"{0}\{1}", dirPath, "IOTest.txt");
            // 声明一个文件流，文件依靠流来操作
            FileStream fs = null;
            // 声明一个流的读写器，用来往流当中写数据
            StreamWriter sw = null;

            // 创建对象来操作文件
            DirectoryInfo di = new DirectoryInfo(dirPath);
            FileInfo fi = new FileInfo(filePath);

            try
            {
                // 路径不存在，我们要创建目录
                if (!di.Exists)
                {
                    // 创建路径
                    di.Create();
                    Console.WriteLine("创建目录：{0}成功", dirPath);
                }
                else
                {
                    Console.WriteLine("目录已经存在");
                }

                // 文件不存在的话，我们要创建文件
                if (!fi.Exists)
                {
                    // 创建txt文件，同时给文件流实例化
                    fs = fi.Create();
                    Console.WriteLine("创建了一个文件：{0}", dirPath);
                }
                else
                {// 如果文件存在，我们打开它
                    // 实例化文件流
                    fs = File.Open(filePath, FileMode.Open);
                    // 定位到文件的末尾，从末尾开始写数据
                    fs.Seek(0, SeekOrigin.End);
                    Console.WriteLine("文件：{0}已经存在，打开它", filePath);
                }

                //实例化流读写器
                sw = new StreamWriter(fs);
                string str = "本次写入的时间是：" + DateTime.Now.ToString();
                sw.Write(str);
                Console.WriteLine("向文件写入的数据是：" + str);
            }
            catch (Exception e)
            {
                Console.WriteLine("文件写入发生错误：" + e.Message);
            }
            finally
            {// 不管文件读取是否发生了错误（出现异常），都要销毁流
                // 关闭读写器
                sw.Close();
                // 关闭文件流
                fs.Close();
                // 销毁文件流
                fs.Dispose();
            }
        }
    }
}
